/**
 * 生成组件配置文档
 * @param {Object} componentConfig 组件配置
 * @returns {string} Markdown格式的文档
 */
export function generateComponentDocs(componentConfig) {
  if (!componentConfig) {
    return '# 无效的组件配置';
  }

  let markdown = `# ${componentConfig.name || '未命名组件'} 配置文档\n\n`;

  // 生成基本信息
  markdown += '## 基本信息\n\n';
  markdown += `- **分类**: ${componentConfig.category || 'default'}\n`;
  if (componentConfig.description) {
    markdown += `- **描述**: ${componentConfig.description}\n`;
  }
  if (componentConfig.icon) {
    markdown += `- **图标**: ${componentConfig.icon}\n`;
  }
  markdown += `- **可作为插槽内容**: ${componentConfig.canBeSlotContent !== false ? '是' : '否'}\n\n`;

  // 生成属性文档
  if (componentConfig.props) {
    markdown += '## 属性\n\n';
    markdown += '| 属性名 | 类型 | 默认值 | 必填 | 描述 | 验证器 | 编辑器配置 |\n';
    markdown += '|--------|------|--------|------|------|--------|-------------|\n';

    const processProps = (props, indent = '') => {
      for (const [key, prop] of Object.entries(props)) {
        if (prop.group === true) {
          markdown += `| ${indent}**${prop.label || key}** | 分组 | - | - | ${prop.description || ''} | - | - |\n`;
          processProps(prop.props, indent + '  ');
        } else {
          // 处理编辑器配置信息
          let editorInfo = '';
          if (prop.editorProps) {
            if (prop.editorProps.placeholder) {
              editorInfo += `占位符: ${prop.editorProps.placeholder}\n`;
            }
            if (prop.editorProps.options) {
              editorInfo += `选项: ${prop.editorProps.options.map(o => o.label).join(', ')}\n`;
            }
            if (prop.editorProps.component) {
              editorInfo += `自定义编辑器: ${prop.editorProps.component}\n`;
            }
          }

          markdown += `| ${indent}${key} | ${prop.type} | ${prop.default !== undefined ? JSON.stringify(prop.default) : '-'} | ${prop.required ? '是' : '否'} | ${prop.description || ''} | ${prop.validator ? '有' : '无'} | ${editorInfo || '-'} |\n`;
        }
      }
    };

    processProps(componentConfig.props);
    markdown += '\n';
  }

  // 生成事件文档
  if (componentConfig.events && Object.keys(componentConfig.events).length > 0) {
    markdown += '## 事件\n\n';
    markdown += '| 事件名 | 描述 |\n';
    markdown += '|--------|------|\n';
    for (const [event, desc] of Object.entries(componentConfig.events)) {
      markdown += `| ${event} | ${desc || ''} |\n`;
    }
    markdown += '\n';
  }

  // 生成插槽文档
  if (componentConfig.slots && Object.keys(componentConfig.slots).length > 0) {
    markdown += '## 插槽\n\n';
    markdown += '| 插槽名 | 描述 |\n';
    markdown += '|--------|------|\n';
    for (const [slot, desc] of Object.entries(componentConfig.slots)) {
      markdown += `| ${slot} | ${desc || ''} |\n`;
    }
    markdown += '\n';
  }

  return markdown;
}

/**
 * 生成所有组件的配置文档
 * @param {Object} allConfigs 所有组件配置
 * @returns {string} 完整的Markdown文档
 */
export function generateAllDocs(allConfigs) {
  // 按分类分组
  const categories = {};
  for (const [name, config] of Object.entries(allConfigs)) {
    const category = config.category || 'default';
    categories[category] = categories[category] || [];
    categories[category].push({ name, config });
  }

  let markdown = '# 组件配置文档\n\n';
  
  // 按分类生成文档
  for (const [category, components] of Object.entries(categories)) {
    markdown += `## ${category} 分类\n\n`;
    
    for (const component of components) {
      markdown += `### ${component.name}\n\n`;
      markdown += generateComponentDocs(component.config);
      markdown += '\n---\n\n';
    }
  }

  return markdown;
}